#include <vector>
#include <set>
#include <iostream>
#include <unordered_map>
#include <numeric>

using namespace std;

bool isPalindrome(string s) {
    for(int i = 0; i < s.size(); i++){
        if(s[i] >= 65 && s[i] <= 90){
            s[i] = tolower(s[i]);
        }
        if(!(s[i] >= 48 && s[i] <= 57 || s[i] >= 97 && s[i] <= 122)){
            s.erase(i--, 1);
        }
    }
    for(int i = 0; i < s.size(); i++){
        if(s[i] != s[s.size()-i-1]){
            return false;
        }
        // cout << s[i] << endl;
    }
    return true;
}

int main(){
    string s = "A man, a plan, a canal: Panama";
    if(isPalindrome(s)){
        cout << "true" << endl;
    }else{
        cout << "false" << endl;
    }
    return 0;
}